package com.ruoyi.xp.order.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.google.gson.annotations.SerializedName;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author chendx
 */
@Data
public class OrderDto {

    private static final long serialVersionUID = 1L;

    /** 订单号 */
    @SerializedName("orderSn")
    private String orderSn;

    /** 商店id */
    @SerializedName("shopId")
    private Long shopId;

    /** 订单站点 */
    @SerializedName("region")
    private String region;

    /** 币种 */
    @SerializedName("currency")
    private String currency;

    /** COD单 */
    @SerializedName("cod")
    private String cod;

    /** 支付金额 */
    @SerializedName("totalAmount")
    private BigDecimal totalAmount;

    /** 订单状态 */
    @SerializedName("orderStatus")
    private String orderStatus;

    /** 物流渠道 */
    @SerializedName("shippingCarrier")
    private String shippingCarrier;

    /** 支付方式 */
    @SerializedName("paymentMethod")
    private String paymentMethod;

    /** 预估运费 */
    @SerializedName("estimatedShippingFee")
    private BigDecimal estimatedShippingFee;

    /** 买家留言 */
    @SerializedName("messageToSeller")
    private String messageToSeller;

    /** 出货天数 */
    @SerializedName("daysToShip")
    private Long daysToShip;

    /** 最后发货日期 */
    @SerializedName("shipByDate")
    private Date shipByDate;

    /** 买家id */
    @SerializedName("buyerUserId")
    private Long buyerUserId;

    /** 买家姓名 */
    @SerializedName("buyerUsername")
    private String buyerUsername;

    /** 实际运费 */
    @SerializedName("actualShippingFee")
    private BigDecimal actualShippingFee;

    /** 是否报关 */
    @SerializedName("goodsToDeclare")
    private String goodsToDeclare;

    /** 卖家备注 */
    @SerializedName("note")
    private String note;

    /** 卖家备注更新时间 */
    @SerializedName("noteUpdateTime")
    private Date noteUpdateTime;

    /** 是否拆分等单 */
    @SerializedName("splitUp")
    private String splitUp;

    /** 买家订单取消原因 */
    @SerializedName("buyerCancelReason")
    private String buyerCancelReason;

    /** 订单取消方 */
    @SerializedName("cancelBy")
    private String cancelBy;

    /** 订单取消原因 */
    @SerializedName("cancelReason")
    private String cancelReason;

    /** 实际运费是否已确认 */
    @SerializedName("actualShippingFeeConfirmed")
    private String actualShippingFeeConfirmed;

    /** 海外仓标识 */
    @SerializedName("fulfillmentFlag")
    private String fulfillmentFlag;

    /** 捡货时间 */
    @SerializedName("pickupDoneTime")
    private Date pickupDoneTime;

    /** 买家选择的物流渠道 */
    @SerializedName("checkoutShippingCarrier")
    private String checkoutShippingCarrier;

    /** 退货运费 */
    @SerializedName("reverseShippingFee")
    private BigDecimal reverseShippingFee;
    
    /** 卖家运费 */
    @SerializedName("sellerShippingFee")
    private BigDecimal sellerShippingFee;

    /** 卖家订单状态 */
    @SerializedName("sellerOrderStatus")
    private String sellerOrderStatus;

    /** 卖家打包时间 */
    @SerializedName("sellerPackageTime")
    private Date sellerPackageTime;

    /** 卖家打包人 */
    @SerializedName("sellerPackageBy")
    private Long sellerPackageBy;

    /** 仓库订单状态 */
    @SerializedName("warehouseOrderStatus")
    private String warehouseOrderStatus;

    /** 仓库打包时间 */
    @SerializedName("warehousePackageTime")
    private Date warehousePackageTime;

    /** 仓库打包人 */
    @SerializedName("warehousePackageBy")
    private String warehousePackageBy;

    /** 仓库处理状态 */
    @SerializedName("warehouseProcessStatus")
    private String warehouseProcessStatus;

    /** 追踪单号 */
    @SerializedName("trackingNo")
    private String trackingNo;

    /** 订单开始时间 */
    @SerializedName("orderStartTime")
    private Date orderStartTime;

    /** 订单修改时间 */
    @SerializedName("orderModifiedTime")
    private Date orderModifiedTime;

    /** 订单支付时间 */
    @SerializedName("payTime")
    private Date payTime;

    /** 最后收货时间 */
    @SerializedName("lastDeliveryTime")
    private Date lastDeliveryTime;

    /** 收货时间 */
    @SerializedName("deliveryTime")
    private Date deliveryTime;

    /** 返还时间 */
    @SerializedName("refundTime")
    private Date refundTime;

    /** 订单完成时间 */
    @SerializedName("finishTime")
    private Date finishTime;
}
